#include <iostream>
using namespace std;
#include<stdio.h> 
//比较重量大小的函数
int min(int x,int y)
{    
    if(x<y)     
        return x;  
    else     
        return y; 
}
 
int max(int x,int y)
{    
    if(x>y)      
        return x;  
    else     
        return y; 
}
 
int Find_min(int A[],int left,int right)  //这里是寻找最轻的金块的函数
{   
    int left_a,middle_a,right_a;
    if(left==right)    //对于n=1的情况
    {
        int min;
        min=A[right];
        return min;
    }
    if(right-left==1)    //对于n=2的情况
    {
        left_a=A[left];
        right_a=A[right];
        return(min(left_a,right_a));
    }
    if(right-left>1)   //对于n>2的情况
    {
        middle_a=(left+right)/2;      
        left_a=Find_min(A,left,middle_a); 
        right_a=Find_min(A,middle_a,right);
        return(min(left_a,right_a));     
    }       
}   
int Find_max(int A[],int left,int right)  //寻找最重金块的函数
{   
    int left_a,middle_a,right_a;   
    if(left==right)
    {    
        int middle_ax;    
        middle_ax=A[right];    
        return middle_ax;   
    }    
    if(right-left==1)    
    {    
        left_a=A[left];    
        right_a=A[right];    
        return(max(left_a,right_a));     
    }      
    if(right-left>1)
    {       
        middle_a=(left+right)/2;      
        left_a=Find_max(A,left,middle_a);      
        right_a=Find_max(A,middle_a,right);      
        return(max(left_a,right_a));     
    }       
}   
int main()
{    
    int A[100];  
    int n;     
    int min;
    int middle_ax;   
    printf("请输入金块数目：");   
    scanf("%d",&n);   
    printf("请输入各金块的重量：");   
    for(int i=0;i<n;i++)   
        scanf("%d",&A[i]);    
    printf("最重的金块：");   
    middle_ax=Find_max(A,0,n-1);    
    printf("%d",middle_ax);      
    printf("\n");   
    printf("最轻的金块：");   
    min=Find_min(A,0,n-1);     
    printf("%d",min); 
    printf("\n"); 
    return 0;
}